#include<iostream>
using namespace std;
const int N=100010;
//head 链表头指向第一个元素
//e[N] --value
//ne[N] --key
//idx --申请的数组长度 和下标无关 类似记录使用了多少次链表方法的作用
int head,e[N],l[N],r[N],idx;
void init()
{
    r[0]=1;
    l[0]=0;
    idx=2;
}
//在k的右边插入一个点
void add(int k,int x)
{
    e[idx]=x;
    r[idx]=r[k];
    l[idx]=k;
    l[r[k]] =idx;
    r[k]=idx;
}
void move(int k)
{
    r[l[k]]=r[k];
    l[r[k]]=l[k];
}